package vaccine.appointment.system.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import vaccine.appointment.system.user.vo.ChangePasswordRequest;
import vaccine.appointment.system.user.vo.CreateStaffRequest;
import vaccine.appointment.system.user.vo.LoginResponse;
import vaccine.appointment.system.user.vo.RegisterRequest;
import vaccine.appointment.system.user.vo.StaffInfoVO;

/**
 * 用户服务接口
 */
public interface UserService {

    /**
     * 用户登录
     * @param userName 用户名
     * @param password 密码
     * @return 登录响应（包含JWT token）
     */
    LoginResponse login(String userName, String password);

    /**
     * 用户注册
     * @param registerRequest 注册请求信息
     * @return 注册是否成功
     */
    Boolean register(RegisterRequest registerRequest);

    /**
     * 修改密码
     * @param userId 用户ID
     * @param request 修改密码请求
     * @return 是否成功
     */
    Boolean changePassword(Integer userId, ChangePasswordRequest request);

    /**
     * 创建工作人员账号（管理员功能）
     * @param request 创建工作人员请求
     * @return 是否成功
     */
    Boolean createStaff(CreateStaffRequest request);

    /**
     * 查询工作人员列表（管理员功能）
     * @param identityInfo 身份信息（可选）
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页数据
     */
    Page<StaffInfoVO> getStaffList(Integer identityInfo, Integer pageNum, Integer pageSize);

    /**
     * 删除工作人员账号（管理员功能）
     * @param staffId 工作人员ID
     * @return 是否成功
     */
    Boolean deleteStaff(Integer staffId);

    /**
     * 重置工作人员密码（管理员功能）
     * @param staffId 工作人员ID
     * @param newPassword 新密码
     * @return 是否成功
     */
    Boolean resetStaffPassword(Integer staffId, String newPassword);
}
